package com.locus.locus.client;

import java.util.ArrayList;
import java.util.List;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.user.client.History;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.Widget;
import com.locus.locus.client.widgets.WidgetConfiguracaoBox;
import com.locus.locus.client.widgets.WidgetConjuntoBoxes;
import com.locus.locus.client.widgets.WidgetEstabelecimento;
import com.locus.locus.client.widgets.WidgetMenu;
import com.locus.locus.client.widgets.WidgetUsuarios;
import com.locus.locus.client.widgets.WidgetMenu.Link;

public class AdministracaoLocus implements EntryPoint {
	
	private static final List<Link> LINKS = new ArrayList<Link>();
	
	static{
		LINKS.add(new Link("/AdministracaoLocus.html#Usuarios", "Usuarios", "Usuarios"));
		LINKS.add(new Link("/AdministracaoLocus.html#Boxes", "Boxes", "Boxes"));
		LINKS.add(new Link("/AdministracaoLocus.html#ConjuntoBoxes", "Conjunto Boxes", "ConjuntoBoxes"));
		LINKS.add(new Link("/AdministracaoLocus.html#Estabelecimentos", "Estabelecimentos", "Estabelecimentos"));
	}
	
	private final ServidorAsync servidor = GWT.create(Servidor.class);
	private ValueChangeHandler<String> callbackSelecaoMenu = new ValueChangeHandler<String>() {
		@Override
		public void onValueChange(ValueChangeEvent<String> event) {
			itemMenuSelecionado();
		}
	};

	@Override
	public void onModuleLoad() {		
		RootPanel.get("menu").add(new WidgetMenu(LINKS, this.callbackSelecaoMenu));
	}

	private void itemMenuSelecionado() {
		final String token = History.getToken();
		final Widget widget;
		final RootPanel rootPanel = RootPanel.get("painel");
		rootPanel.clear();
		
		if("Usuarios".equals(token)){
			widget = new WidgetUsuarios(this.servidor);
		}else if("Boxes".equals(token)){
			widget = new WidgetConfiguracaoBox(this.servidor);
		}else if("Estabelecimentos".equals(token)){
			widget = new WidgetEstabelecimento(this.servidor);
		}else if("ConjuntoBoxes".equals(token)){
			widget = new WidgetConjuntoBoxes(this.servidor);
		}else{
			widget = null;
		}
		if(widget != null){
			rootPanel.add(widget);
		}
	}
}
